﻿using System;
using System.Drawing;
using System.Windows.Forms;
using TestesFixacao.Dominio.Modelos;
using TestesFixacao.WindowsApp.Refatorado.Controls.Shared;

namespace TestesFixacao.WindowsApp.Refatorado.Controls.DisciplinaForms
{
    public partial class DisciplinaDialog : BaseDialog
    {
        private Disciplina _disciplina;

        public DisciplinaDialog(string descricao)
        {
            InitializeComponent();

            RegistraControles(txtNome, txtNumero);

            if (string.IsNullOrEmpty(descricao))
                throw new ArgumentNullException("descricao");

            DescricaoTela = descricao;

            Size = new Size(Size.Width, Size.Height - 150);
        }

        public Disciplina Disciplina
        {
            get { return _disciplina; }
            set
            {
                _configurando = true;
                _disciplina = value;

                txtNumero.Text = _disciplina.Numero.ToString();
                txtNome.Text = _disciplina.Nome;

                _configurando = false;
                DoOperation();
            }
        }

        protected override void DoOperation()
        {
            if (_configurando)
                return;

            _disciplina.Nome = txtNome.Text;
            _disciplina.Numero = int.Parse(txtNumero.Text);

            try
            {
                _disciplina.Valida();

                Main.Instance.ShowMessageInFooter("A teste já pode ser gravada");

                HabilitaBotaoOk();
            }
            catch (Exception ex)
            {
                DesabilitaBotaoOk();
                Main.Instance.ShowMessageInFooter(ex.Message);
            }
        }
    }
}